#ifndef utility_Vector_Iterator_h
#define utility_Vector_Iterator_h

#include "StlContainerIterator.h"

namespace serika
{
	namespace ut
	{
		template<typename Item>
		class VectorIterator : public StlContainerIterator<std::vector<Item>, Item>
		{
		public:
			VectorIterator(std::vector<Item>& itemList)
				: StlContainerIterator(itemList)
			{
			}

			virtual ~VectorIterator() {}

		public:
			Item& GetCurrent() const
			{
				return *mCurrent;
			}
		};

		template<typename Item>
		class VectorReadOnlyIterator : public StlContainerReadOnlyIterator<std::vector<Item>, Item>
		{
		public:
			VectorReadOnlyIterator(const std::vector<Item>& itemList) 
				: StlContainerReadOnlyIterator(itemList)
			{
			}

			virtual ~VectorReadOnlyIterator() {}

		public:
			const Item& GetCurrent() const
			{
				return *mCurrent;
			}
		};
	}
}

#endif
